<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 1.递归阶乘
        // function fn(n) {
        //     if (n == 1) {
        //         return 1 //递归里必须加终止条件
        //     }
        //     return n * (fn(n - 1))//递归就是我调我自己的 循环反复
        // }
        // fn(3)
        // 过程：
        //  前一项 乘以 后一项  后一项必须先计算出结果在于前一项相计算
        // return 3 * (fn(2))
        // return 3 * (2 * fn(2 - 1))
        // return 3 * (2 * fn(1))
        // return 3 * (2 *1)
        // return 3 * (2)//fn(2) = 2
        // return 6//fn(3) =6


        function fn(n) {
            if (n == 1) {
                return 1
            }
            return n * (fn(n - 1))
        }
        console.log(fn(5));
        // 递归阶乘过程 ：
        // return 5 * (fn(5 - 1))
        // return 5 * (fn(4))
        // return 5 *  4 * (fn(4 - 1))
        // return 5 *  4 * (fn(3))
        // return 5 *  4 *  3* (fn(3 - 1))
        // return 5 *  4 *  3* (fn(2))
        // return 5 *  4 *  3* 2 * (fn(2 - 1))
        // return 5 *  4 *  3* 2 * (fn(1))
        // return 5 *  4 *  3* 2 * 1
        // return 120






    </script>
</body>

</html>